Extensible Markup Language (XML) is fast becoming the de facto standard for data exchange across diverse networks and computing platforms. XML is a technology concerned with the description and structuring of data. It is platform, operating system, and network architecture independent, meaning any XML document following XML's syntax rules can be read by any XML-compliant parser running any operating system on any platform, and that the XML document may be sent over the network via any network protocol. For example, an XML document can be authored by someone using, e.g., a UNIX workstation and read by others using substantially any computing platform, such as a PC, Apple Macintosh, or workstation, etc, and running any operating system that includes built-in support for XML, or on which an XML parser can run, such as Microsoft Windows, UNIX, LINUX, MAC OS-10, etc.
XML comprises a mark up language that is a subset of SGML (Standard Generalized Markup Language). SGML is a text-based language that can be used to mark up data—that is, add metadata—in a way that is self-describing. The most widely known application of SGML is HyperText Markup Language, or HTML. Generally, HTML comprises a specific vocabulary that is used as a universal markup language for the display of information, and the linking of different pieces of information.
In many respects, XML is similar to HTML. Both are based on tagged markup elements, enabling XML documents to be easily generated using a standard, well-known syntax. However, unlike HTML, XML does not provide a direct mechanism for defining the display and layout (e.g., tables, frames, layout information, etc.) of data. Rather, as a data exchange mechanism, these features are not needed. At first, this may seem like a limitation. However, the data contained in XML documents can be displayed in a variety of different manners, including extracting the data from a document and displaying the extracted data using a predefined or custom user interface, and transforming the XML document with various types of style sheets, including Cascading Style Sheets (CSS) and Extensible Style Sheet Language—Transformation (XSLT) style sheets.
Although very powerful as a data-exchange mechanism, XML by itself also does not provide direct programming abilities. In fact, the term “language” in its name is a bit of a misnomer, as XML does not provide inherent support for “normal” computer language functionality, such as procedural elements, recursion, looping, etc. Although style sheets may be written to include procedural logic (e.g., conditions, branching, loops, etc.) to be applied to an XML document, such operations are generally limited to data extracting, formatting, and display. Furthermore, under such a scenario the programming and data elements are not contained in a single document, but rather require at least two separate documents.